#pragma once
#include "cybertron/DefinesCore.hpp"
#include "cybertron/sensor/noise/NoiseBase.hpp"
#include "cybertron/glm/vec3.hpp"
#include <functional>
#include <chrono>

CYBERTRON_BEGIN

class NoiseMaker
{
public:
	NoiseMaker();
	virtual ~NoiseMaker();

	const vec3& position() const { return mPos; }
	const vec3& rotation() const { return mRot; }

	virtual void update(const vec3& pos, const vec3& rotation, uint64_t frame = 0);

	void addUpdateHandler(std::function<void()> updateHandler);

private:
	vec3											mPos;
	vec3											mRot;
	std::vector< std::function<void()> >			mpUpdateHandlers;
};

CYBERTRON_END